'use strict';
app.factory('ProductionService', function(HttpUtilService,$q) {
        /***
         * 获取不同的分类
         * @param current_page int page
         * @param items_per_page int rows
         * @param order_by int 排序（0综合，1新品-最新在前，2收藏-最多在前，3价格从高到低，4从低到高，5销量-最高在线）
         * @param version
         * @returns {AnimateRunner.promise|*|qFactory.Deferred.promise|td.f.promise|f.promise}
         * {
         * cat_id int 商品分类id
         * cat_title 分类名称
         * cat_icon 分类图标
         * cat_detail 分类详情描述
         * cat_more 分类更多参数
         * }
         */
        function getCategory(current_page,items_per_page,order_by,version){
            var deferred = $q.defer();
            HttpUtilService.httpGetNoToken("Category/Index",{current_page:current_page,items_per_page:items_per_page,order_by:order_by,version:version})
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ProvisionInfo)
                    } else {
                        console.log("getCategory code:"+ response.code)
                    }
                },function (error) {
                    console.log("getCategory error:"+ error)
                })
            return deferred.promise;
        }

        /***
         * 获取分类详细内容页面
         * @param current_page int page
         * @param items_per_page int rows
         * @param cat_id int 商品分类id
         * @param order_by int 排序（0综合，1新品-最新在前，2收藏-最多在前，3价格从高到低，4从低到高，5销量-最高在线）
         * @param version
         * @returns {AnimateRunner.promise|*|qFactory.Deferred.promise|td.f.promise|f.promise}
         * {
         * goods_id int 产品编号
         * cat_id int 商品分类id
         * goods_title 产品标题
         * goods_description 产品简短描述
         * goods_price float 商品原价
         * real_price float 实付金额
         * buyers_nums int 商品数量
         * group_price 团购价
         * alone_price int 单独买
         * rebate int 折扣率
         * buy_count int 已购买人数
         * collection_count int 已收藏人数
         * picture 图片地址
         * }
         */
        function getCategoryDetail(current_page,items_per_page,cat_id,order_by,version){
            var deferred = $q.defer();
            HttpUtilService.httpGetNoToken("Category/Detail",{current_page:current_page,items_per_page:items_per_page,cat_id:cat_id,order_by:order_by,version:version})
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ProvisionInfo)
                    } else {
                        console.log("getCategoryDetail code:"+ response.code)
                    }
                },function (error) {
                    console.log("getCategoryDetail error:"+ error)
                })
            return deferred.promise;
        }

        /***
         * 获取品牌馆首页
         * 点击图片进入店铺
         * @param current_page 当前页数 int
         * @param items_per_page 一页显示几条数据 int
         * @param order_by 排序 int
         * @param version 版本号
         * @returns {AnimateRunner.promise|*|qFactory.Deferred.promise|td.f.promise|f.promise}
         * {
         * brand_id 编号
         * brand_title 名称
         * brand_icon 品牌管标志
         * seller_id 店铺id
         * picture 品牌管宣传广告
         * }
         */
        function getBrandIndex(current_page,items_per_page,order_by,version){
            var deferred = $q.defer();
            HttpUtilService.httpGetNoToken("Brand/Index",{current_page:current_page,items_per_page:items_per_page,order_by:order_by,version:version})
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ProvisionInfo)
                    } else {
                        console.log("getBrandIndex code:"+ response.code)
                    }
                },function (error) {
                    console.log("getBrandIndex error:"+ error)
                })
            return deferred.promise;
        }

        /***
         * 获取产品详情
         * @param goods_id int 产品编号
         * @returns {AnimateRunner.promise|*|qFactory.Deferred.promise|td.f.promise|f.promise}
         * {
         * seller_id 店铺id
         * goods_id int 产品编号
         * cat_id int 商品分类
         * goods_title 标题
         * goods_description  简短描述
         * goods_price float 原价
         * real_price float 实付金额
         * buyers_nums int 商品数量
         * group_price 团购价，包括规模价格
         * alone_price int 单独买
         * rebate int 折扣率
         * buy_count int 已购买人数
         * collection_count int 已收藏人数
         * gooods_array 商品规格， json数据格式({"规格":"16G","颜色":"红","是否可以使用券":"可以"})
         * goods_color 商品颜色，JSON格式，值为图片地址
         * goods_picture 图片地址,JSON格式
         * }
         */
        function getProductionInfo(goods_id){
            var deferred = $q.defer();
            HttpUtilService.httpGetNoToken("Production/Info",{goods_id:goods_id})
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ProvisionInfo)
                    } else {
                        console.log("getProductionInfo code:"+ response.code)
                    }
                },function (error) {
                    console.log("getProductionInfo error:"+ error)
                })
            return deferred.promise;
        }

        /***
         * 创建发票信息
         * 额外的发票信息
         * @param order_id 订单编号
         * @param user_id 用户id
         * @param type int 发票类型，0普通发票，1餐饮发票，2增值税发票
         * @param invoice_title 发票抬头
         * @param goods_id 产品id
         * @param token
         * @returns {AnimateRunner.promise|*|qFactory.Deferred.promise|td.f.promise|f.promise}
         * {
         * response int 是否成功（1：成功；0：未成功；-1：异常或不存在该请求）
         * }
         */
        function createInvoice(order_id,user_id,type,invoice_title,goods_id,token){
            var deferred = $q.defer();
            HttpUtilService.httpPostHasToken("Production/Invoice",{order_id:order_id,user_id:user_id,type:type,invoice_title:invoice_title,goods_id:goods_id},token)
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.defaultResponse)
                    } else {
                        console.log("createInvoice code:"+ response.code)
                    }
                },function (error) {
                    console.log("createInvoice error:"+ error)
                })
            return deferred.promise;
        }

        /***
         * 商品评论
         * @param user_id 用户id
         * @param picture 上传图片 json格式
         * @param content 评论内容
         * @param service_point 服务评分
         * @param delivery_point 物流评分
         * @param goods_point 商品评分
         * @param goods_id 商品id
         * @param token
         * @returns {AnimateRunner.promise|*|qFactory.Deferred.promise|td.f.promise|f.promise}
         * {
         * response int 是否成功（1：成功；0：未成功；-1：异常或不存在该请求）
         * }
         */
        function createEvaluate(user_id,picture,content,service_point,delivery_point,goods_point,goods_id,token){
            var deferred = $q.defer();
            HttpUtilService.httpPostHasToken("Production/Invoice",{user_id:user_id,picture:picture,content:content,service_point:service_point,delivery_point:delivery_point,goods_point:goods_point,goods_id:goods_id},token)
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ValidateTokenMessage)
                    } else {
                        console.log("createEvaluate code:"+ response.code)
                    }
                },function (error) {
                    console.log("createEvaluate error:"+ error)
                })
            return deferred.promise;
        }
        function getProductionDetail(user_id,goods_id){
            var deferred = $q.defer();
            //todo:参数有问题06-07 06-08 06-09 这三个接口还没写
            HttpUtilService.httpGetNoToken("Production/Info",{goods_id:goods_id})
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ProvisionInfo)
                    } else {
                        console.log("getProductionDetail code:"+ response.code)
                    }
                },function (error) {
                    console.log("getProductionDetail error:"+ error)
                })
            return deferred.promise;
        }
        function getProductionQuery(current_page,items_per_page,order_by,version){
            var deferred = $q.defer();
            //todo:参数有问题
            HttpUtilService.httpGetNoToken("Production/Query",{current_page:current_page,items_per_page:items_per_page,order_by:order_by,version:version})
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ProvisionInfo)
                    } else {
                        console.log("getProductionQuery code:"+ response.code)
                    }
                },function (error) {
                    console.log("getProductionQuery error:"+ error)
                })
            return deferred.promise;
        }

        /***
         * 物流信息
         * @param user_id int 用户id
         * @param goods_id int 货物id
         * @param token
         * @returns {AnimateRunner.promise|*|qFactory.Deferred.promise|td.f.promise|f.promise}
         * {
         * delivery_company 物流公司
         * delivery_no 物流单号
         * delivery_address int 配送地址
         * message 物流信息json
         * }
         */
        function getDeliveryInfo(user_id,goods_id,token){
            var deferred = $q.defer();
            HttpUtilService.httpGetHasToken("Delivery/Info",{user_id:user_id,goods_id:goods_id},token)
                .then(function (response) {
                    if(response.code == "000000"){
                        deferred.resolve(response.ProvisionInfo)
                    } else {
                        console.log("getDeliveryInfo code:"+ response.code)
                    }
                },function (error) {
                    console.log("getDeliveryInfo error:"+ error)
                })
            return deferred.promise;
        }
        return {
            getCategory:getCategory,
            getCategoryDetail:getCategoryDetail,
            getBrandIndex:getBrandIndex,
            getProductionInfo:getProductionInfo,
            createInvoice:createInvoice,
            getProductionDetail:getProductionDetail
        }
    })

